package hello

import (
	"fmt"
	"math"
)

func ArrayTest1() {
	fmt.Println("------------ ArrayTest1() --------------")

	var n [10]int /* n 是一个长度为 10 的数组 */
	//var i, j int

	/* 为数组 n 初始化元素 */
	for i := 0; i < 10; i++ {
		n[i] = i + 100 /* 设置元素为 i + 100 */
	}

	/* 输出每个数组元素的值 */
	for j := 0; j < 10; j++ {
		fmt.Printf("Element[%d] = %d\n", j, n[j])
	}

	// -------------------------
	/* 数组 - 5 行 2 列*/
	var a = [5][2]int{{0, 0}, {1, 2}, {2, 4}, {3, 6}, {4, 8}}
	/* 输出数组元素 */
	for i := 0; i < 5; i++ {
		for j := 0; j < 2; j++ {
			fmt.Printf("a[%d][%d] = %d\n", i, j, a[i][j])
		}
	}

	//-- 向函数传递数组-----------------------
	/* 数组长度为 5 */
	var balance = [5]int{1000, 2, 3, 17, 50}
	var avg float32

	/* 数组作为参数传递给函数 */
	avg = getAverage(balance, 5)

	/* 输出返回的平均值 */
	fmt.Printf("平均值为: %f \n", avg)
	fmt.Printf("平均值为: %.2f \n", avg)
	fmt.Printf("平均值为 ceil: %f \n", math.Ceil(float64(avg)))
	fmt.Printf("平均值为 round: %f \n", math.Round(float64(avg)))
	fmt.Printf("平均值为 floor: %f \n", math.Floor(float64(avg)))

	// ------------------------------
	const MAX int = 3
	a1 := []int{10, 100, 200}
	var ptr [MAX]*int
	for i := 0; i < MAX; i++ {
		fmt.Printf("a[%d] = %d\n", i, a1[i])
		ptr[i] = &a1[i] /* 整数地址赋值给指针数组 */
	}
	for i := 0; i < MAX; i++ {
		fmt.Printf("prt a[%d] = %d\n", i, *ptr[i])
	}
}

func getAverage(arr [5]int, size int) float32 {
	var i, sum int
	var avg float32

	for i = 0; i < size; i++ {
		sum += arr[i]
	}

	avg = float32(sum) / float32(size)

	return avg
}
